using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._BusinessAnalystTools._TargetMarketing
{
    /// <summary>
    /// <para>Create Target Group</para>
    /// <para>Creates a new target group. A target group is a container for targets that you create, name, and populate with segments from a locally installed Business Analyst dataset.</para>
    /// <para>创建新的目标组。目标组是目标的容器，用于创建、命名并使用本地安装的 Business Analyst 数据集中的区段进行填充。</para>
    /// </summary>    
    [DisplayName("Create Target Group")]
    public class CreateTargetGroup : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public CreateTargetGroup()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_target_group">
        /// <para>Output Target Group</para>
        /// <para>The name for the output target group file.</para>
        /// <para>输出目标组文件的名称。</para>
        /// </param>
        /// <param name="_input_type">
        /// <para>Targets</para>
        /// <para><xdoc>
        ///   <para>Specifies a list of the targets to be added to the new target group.
        ///   <bulletList>
        ///     <bullet_item>Name—The name of the target.  </bullet_item><para/>
        ///     <bullet_item>Segments—The segments to be added to the target.  </bullet_item><para/>
        ///     <bullet_item>Color—The color associated with the segment.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定要添加到新目标组的目标列表。
        ///   <bulletList>
        ///     <bullet_item>名称 - 目标的名称。</bullet_item><para/>
        ///     <bullet_item>区段 - 要添加到目标的区段。</bullet_item><para/>
        ///     <bullet_item>颜色 - 与线段关联的颜色。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        public CreateTargetGroup(object _target_group, object _input_type)
        {
            this._target_group = _target_group;
            this._input_type = _input_type;
        }
        public override string ToolboxName => "Business Analyst Tools";

        public override string ToolName => "Create Target Group";

        public override string CallName => "ba.CreateTargetGroup";

        public override List<string> AcceptEnvironments => ["baDataSource", "workspace"];

        public override object[] ParameterInfo => [_target_group, _input_type];

        /// <summary>
        /// <para>Output Target Group</para>
        /// <para>The name for the output target group file.</para>
        /// <para>输出目标组文件的名称。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Target Group")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _target_group { get; set; }


        /// <summary>
        /// <para>Targets</para>
        /// <para><xdoc>
        ///   <para>Specifies a list of the targets to be added to the new target group.
        ///   <bulletList>
        ///     <bullet_item>Name—The name of the target.  </bullet_item><para/>
        ///     <bullet_item>Segments—The segments to be added to the target.  </bullet_item><para/>
        ///     <bullet_item>Color—The color associated with the segment.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定要添加到新目标组的目标列表。
        ///   <bulletList>
        ///     <bullet_item>名称 - 目标的名称。</bullet_item><para/>
        ///     <bullet_item>区段 - 要添加到目标的区段。</bullet_item><para/>
        ///     <bullet_item>颜色 - 与线段关联的颜色。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Targets")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _input_type { get; set; }


        public CreateTargetGroup SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}